﻿using System;
using System.Collections.Generic;

namespace Dominio
{
    public interface ISistema
    {
        void agregarCostoHabitacion(int num, string capacidad, float costo);
        //void AgregarCostoHabitacion(int idcat, string cap, float precio);
        void agregarLog(DateTime fecha, int idusuario, string accion, string clasificacion);
        int altaCategoria(string nombre, string descripcion, char est);
        int altaCliente(string nombre, string apellido, string tel);
        int altaComodidad(string txtCom, string desc, float costoAgregado, char estado);
        int altaHabitacion(int numero, string capacidad, string categoria, System.Collections.Generic.List<int> lstcom, char estado);
        int altaImpuesto(int idPais, string impuesto,float valor,int orden, char estado);
        int altaPais(string nombre, char estado);
        int altaPermiso(string desc);
        int altaRol(string nombre, char estado);
        int altaUsuario(string usuario, string password, string Nombre, string Apellido, DateTime Nacimiento, char estado);
        double calcularAlojamiento(int hab);
        int calcularCantidadDeNoches(int hab);
        double calcularCostoDeComodidadesDeUnaHabitacion(int hab);
        void cambiarPasswordUsuario(int iduser, string password);
        void validarPasswordUsuario(int iduser, string password);
        //List<string[]> consultarLog(DateTime fch);
        List<string[]> DarHabitacionesDisponibles(string ini, string fin, System.Collections.Generic.List<int> listcomodidades, int idcat, string cap);
        bool existeReserva(int idReserva);
        void guardarConfiguracion(string nombreHotel, int idPais, string tipoFacturacion, string urlWebService);
        void login(string usuario, string password);
        void modificarCategoria(int idCategoria, string nombre, string descripcion, char est);
        void modificarCliente(int idCliente, string nombre, string apellido, string tel);
        void modificarComodidad(int idComodidad, string nombre, string descripcion, float costoExtra, char est);
        void modificarPais(int idPais, string nombre, char estado);
        void modificarPermiso(int id, string desc);
        void modificarRol(int id, string nombre, char estado);
        void modificarUsuario(int idUsuario, string usuario, string password, string Nombre, string Apellido, DateTime Nacimiento, char estado);
        List<string[]> obtenerComodidadesHabitacion(int numero);
        float obtenerCostoHabitacion(int cate, string cap);
        List<string[]> obtenerUsuarios();
        List<string[]> obtenerReservas();
        List<string[]> obtenerReservasCheckInFecha(DateTime fecha, string estado);
        bool realizarCheckIn(int idReserva);
        void realizarCheckOut(int idReserva);
        int realizarReserva(int idCliente, int numeroHab, DateTime fchin, DateTime fchout);
        List<string[]> traerCategorias(bool soloactivos);
        string[] traerCliente(int idCliente);
        string traerClienteDeUnaHabitacion(int habitacionActual);
        List<string[]> traerClientes();
        List<string[]> traerComodidades(bool soloactivos);
        float traerCostoHabitacion(int idcat, string cap);
        System.Collections.Generic.List<string> traerExtras();
        System.Collections.Generic.List<string[]> traerHabitaciones(bool soloactivos);
        System.Collections.Generic.List<string[]> traerImpuestos(int idPais, bool soloactivos);
        System.Collections.Generic.List<string[]> obtenerPaises(bool soloactivos);
        System.Collections.Generic.List<string[]> traerPermisos();
        System.Collections.Generic.List<string[]> traerPermisosUsuario(int usuario);
        System.Collections.Generic.List<string[]> traerRoles();
        //int traeUsuario(string usu);

        void modificarImpuesto(int p, string p_2, float p_3, char estado);

        String getSistemaActualFacturacion();

        string getWsUrl();

        List<string> traerNumeroDeHabitacionesOcupadas();

        bool facturar(string[] conceptos, double[] montos, string cliente, DateTime dateTime);

        void setOrdenImpuesto(int idImpuesto, int orden);

        int getIdPaisConfigurado();
        string[] getConfiguracionSistema();
        int obtenerIdUsuario(string nomUsuario);
        int obtenerIdUsuarioLogueado();
        void modificarHabitacion(int idHabitacion, string capacidad, string categoria, List<int> listaComodidades, char estado);

        string[] obtenerReserva(int nroReserva);

    }
}
